#ifndef QUEUE_H_
#define QUEUE_H_
// #define Item int
#include "customer.h"

typedef Customer Item;

class Queue
{
private:
    // class scope definitions - 嵌套声明：在类的声明中声明结构体 - 只能在类内使用，避免冲突
    struct Node{ Item item; struct Node * next; };
    enum {Q_SIZE = 10};

    // class members
    Node * front;       // 队列首
    Node * rear;        // 队列尾
    int nitem;          // 队列当前存储的元素数量
    const int qsize;    // 队列的最大容量

    // class methods
    Queue(const Queue & q): qsize(0){};
    Queue & operator=(const Queue & q){return *this;};

public:
    Queue(int qs = Q_SIZE);
    ~Queue();

    bool isempty() const;
    bool isfull() const;
    int queuecount() const;
    bool enqueue(const Item &item);
    bool dequeue(Item &item);
};

#endif